Сервис микроконтроллера
Tsmsms - это Linux-сервис, выполняющий следующие функции:
- Опрос микроконтроллера по текстовому протоколу на логическом порту
- Переключение Сим-карты программно
- Хранение состояния контролируемых параметров микроконтроллера
- Предоставление программного интерфейса для других модулей системы
Структура файлов сервиса
| Имя файла | Предназначение |
|---|---|
| app.lua | Точка входа, основной файл, запускаемый сервисом в автозагрузке устройства |
| note.lua | Содержит константы - сообщения для веб-интерфейса пользователя |
| lock.lua | Содержит вспомогательные функции, реализующие режим занят/свободен |
| notifier.lua | Информирует на шине UBUS о выполненных командах микроконтроллера |
| reset.lua | Выполняет пошаговую процедуру переподключения модема для поиска сим-карты в слоте |
| stm.lua | Обращается к микроконтроллеру через логический порт /dev/ttyS |
| switch.lua | Выполняет пошаговую процедуру переключения активного слота Сим-карт |
| /teststm | Подкаталог содержит набор автотестов |
Предоставление программного интерфейса
Управление сервисом осуществляется при помощи методов шины UBUS
ubus -v list tsmstm
Возможные запросы к UBUS:
- send (отправка произвольной STM-команды)
- switch (переключить слот сим-карты)
- reset (включить процесс сброса Модема)
Примеры результата:
root@BITCORD-RTR-2:~# ubus -v list tsmstm
'tsmstm' @a6acafc4
"send":{"command":"String","owner":"String"}
"switch":{"simid":"String","owner":"String"}
"reset":{"owner":"String"}
root@BITCORD-RTR-2:~#
ubus call tsmstm send
Отправка произвольной команды микроконтроллеру согласно спецификации:
ubus call tsmstm send '{"name":"command","details":"~0:SIM.SEL=?"}'
Пример результата:
root@BITCORD-RTR-2:~# ubus call tsmstm send '{"command":"~0:SIM.SEL=?"}'
{
"answer": "0\nOK\n",
"note": "Запрос: какая из SIM активна",
"stdout": "nil",
"command": "~0:SIM.SEL=?"
}
root@BITCORD-RTR-2:~#
ubus call tsmstm switch
Переключает слот SIM-карт двухсимочного модема:
ubus call tsmstm switch '{"simid":"1"}'
При этом, сервис отправляет микроконтроллеру, отслеживаемую в режиме "debug", серию следующих команд:
root@BITCORD-RTR-2:~# tsmstm debug
Установить активной SIM 1:
9:45:47.14 [tsmstm]: Fire: [~0:SIM.SEL]: ~0:SIM.SEL=1 -> OK
Снято разрешение питания модема:
9:45:49.16 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=0 -> OK
Разрешено питание модема:
9:45:51.19 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=1 -> OK
Подано питание на модем:
9:45:53.23 [tsmstm]: Fire: [~0:SIM.PWR]: ~0:SIM.PWR=0 -> OK
9:45:56.24 [tsmstm]: Slot switched to: 1
Пример результата:
root@BITCORD-RTR-2:~# ubus call tsmstm switch '{"simid":"1"}'
{
"status": "started"
}
root@BITCORD-RTR-2:~#
ubus call tsmstm reset
Переподключает модем для поиска Сим-карты в слоте:
ubus call tsmstm reset
При этом, сервис отправляет микроконтроллеру, отслеживаемую в режиме "debug", серию следующих команд:
Снято разрешение питания модема:
9:28:3.52 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=0 -> OK
Разрешено питание модема:
9:28:5.57 [tsmstm]: Fire: [~0:SIM.EN]: ~0:SIM.EN=1 -> OK
Подано питание на модем:
9:28:7.60 [tsmstm]: Fire: [~0:SIM.PWR]: ~0:SIM.PWR=0 -> OK
9:28:9.81 [tsmstm]: Reset process completed.
Пример результата:
root@BITCORD-RTR-2:~# ubus call tsmstm reset
{
"status": "started"
}
root@BITCORD-RTR-2:~#
Журналирование работы сервиса Tsmstm
Осуществляется посредством правила 19_rule в сервисе Applogic. Пронаблюдать работу правила можно при помощи отладочной таблицы, а также, посредством веб-интерфейса.